diff options
| author | Nikhil M Warrier <nikhilmw.dev@gmail.com> | 2026-03-03 09:00:53 +0530 |
|---|---|---|
| committer | Nikhil M Warrier <nikhilmw.dev@gmail.com> | 2026-03-03 09:00:53 +0530 |
| commit | c1c7ca70783cbb38cf35fe0c9fb05dd626f46c08 (patch) | |
| tree | 2941afd019e4e073f195929ede6792a6d45af5dd /src/pages/members/[...id].astro | |
| parent | b1cc6aef5d01b59daf64d12a8e9264324540d8b7 (diff) | |
Rename Author to Member, add Codeberg icons
Diffstat (limited to 'src/pages/members/[...id].astro')
| -rw-r--r-- | src/pages/members/[...id].astro | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/pages/members/[...id].astro b/src/pages/members/[...id].astro new file mode 100644 index 0000000..8010365 --- /dev/null +++ b/src/pages/members/[...id].astro @@ -0,0 +1,58 @@ +--- +import BlogCard from '@/components/BlogCard.astro' +import Breadcrumbs from '@/components/Breadcrumbs.astro' +import MemberCard from '@/components/MemberCard.astro' +import PageHead from '@/components/PageHead.astro' +import Layout from '@/layouts/Layout.astro' +import { getAllMembers, getPostsByAuthor } from '@/lib/data-utils' + +export async function getStaticPaths() { + const members = await getAllMembers() + return members.map((member) => ({ + params: { id: member.id }, + props: { member }, + })) +} + +const { member } = Astro.props +const memberPosts = await getPostsByAuthor(member.id) +--- + +<Layout class="max-w-3xl"> + <PageHead + slot="head" + title={`${member.data.name} (Member)`} + description={member.data.bio || `Profile of ${member.data.name}.`} + noindex + /> + <Breadcrumbs + items={[ + { href: '/members', label: 'Members', icon: 'lucide:users' }, + { label: member.data.name, icon: 'lucide:user' }, + ]} + /> + + <section> + <MemberCard member={member} /> + </section> + <section class="flex flex-col gap-y-4"> + <h2 class="text-2xl font-medium">Posts by {member.data.name}</h2> + { + memberPosts.length > 0 ? ( + <ul class="flex flex-col gap-4"> + {memberPosts + .filter((post) => !post.data.draft) + .map((post) => ( + <li> + <BlogCard entry={post} /> + </li> + ))} + </ul> + ) : ( + <p class="text-muted-foreground"> + No posts available from this member. + </p> + ) + } + </section> +</Layout> |
